package heap;

/**
 * JAVA_TOOL_OPTIONS 和 JAVA_OPTIONS
 * -Dfile.encoding=UTF-8
 * 只有一个存在，则 java/javac 会使用有值的设置
 * 同时存在，会先检测 JAVA_TOOL_OPTIONS
 * <p>
 * https://www.cnblogs.com/jhxxb/p/11001238.html
 */
public class T01_I_Add {
    public static void main(String[] args) {
        int i = 1;
        // iconst_1 // 将常量1压入栈中，此时栈顶的值变为1
        // istore_1 // 把栈顶的值放到局部变量1中，即i这时候由0变成了1

        i = i++; // i=1
        // iload_1  // 把局部变量1（即i）的值放到栈顶，此时栈顶的值变为1
        // iinc 1 by 1 // 把局部变量1，也就是i，增加1，这个指令不会导致栈的变化，i此时变成2了
        // istore_1

        i = ++i; // i=2
        // iinc 1 by 1
        // iload_1
        // istore_1

        int j = i++; // j=2 i=3
        // iload_1
        // iinc 1 by 1
        // istore_2

        int k = i++ + i * i++; // k=19 i=5
        // iload_1
        // iinc 1 by 1
        // iload_1
        // iload_1
        // iinc 1 by 1
        // imul
        // iadd
        // istore_3
        // return

        System.out.println(i);
        System.out.println(j);
        System.out.println(k);
    }
}
